package com.neusoft.databus.common.dto;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

import org.hibernate.validator.constraints.Length;

import com.neusoft.bizcore.web.dto.AbstractDTO;
import com.neusoft.databus.common.enums.MetricValueCategory;
import com.neusoft.databus.common.enums.MetricValueType;

import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

/**
 * description
 *
 * @author sunchf
 * @date 2018年12月21日 下午4:33:16
 */
@Getter
@Setter
@ToString
public class MetricDTO extends AbstractDTO {

    private static final long serialVersionUID = -8752993791736920195L;

    /**
     * 指标名称
     */
    @NotBlank(message = "指标名称不能为空")
    @Length(max = 255, message = "指标名称不能超过{max}位")
    private String name;

    /**
     * 指标编码
     */
    @NotBlank(message = "指标编码不能为空")
    @Length(max = 255, message = "指标编码不能超过{max}位")
    private String code;

    /**
     * 指标变量名
     */
    @NotBlank(message = "指标变量名不能为空")
    @Length(max = 255, message = "指标组变量名不能超过{max}位")
    private String variable;

    /**
     * 指标值数据类型
     */
    @NotNull(message = "指标值数据类型不能为空")
    private MetricValueType valueType;

    /**
     * 指标值截取规则配置
     */
    // @Type(type = "StringJsonObject")
    @Length(max = 255, message = "指标值截取规则配置不能超过{max}位")
    private String rule;

    /**
     * 指令
     */
    @NotBlank(message = "指令不能为空")
    @Length(max = 1023, message = "指令不能超过{max}位")
    private String command;

    /**
     * 指标组。关系在MetricGroup中维护
     */
    //	private List<MetricGroupDTO> groups = new ArrayList<>();

    /** 指标单位 */
    //@NotBlank(message = "指标单位不能为空")
    @Length(max = 255, message = "指标单位不能超过{max}位")
    private String unit;

    /**
     * 指标值数据类别
     */
    private MetricValueCategory valueCategory;

    /** 注释 */
    private String comment;
}
